import WxRequest from './request'
import { getStorage, clearStorage } from './storage'
import { modal, toast } from './extendApi'
// ----------------- 实例化 ----------------------

// 对 WxRequest 进行实例化
const instance = new WxRequest({
  baseURL: 'https://gmall-prod.atguigu.cn/mall-api',
  timeout: 15000
})
// 配置请求拦截器
instance.interceptors.request = (config) => {
  // 在发送请求之前做些什么
  const token = getStorage('token')
  // isSuccess: false 表示是网络超时或其他问题，提示 网络异常，同时将返回即可
  if (token) {
    config.header['token'] = token
    // 如果请求错误，将错误的结果返回出去

  }
  return config
}

// 响应拦截器
instance.interceptors.response = async (response) => {
  // 对响应数据做点什么
  const { isSuccess, data } = response
  if (!isSuccess) {
    wx.showToast({
      title: '网络请求异常请重试',
      icon: 'error'
    })
    return response
  }
  switch (data.code) {
    case 200:
      return data

    case 208:
      const res = await modal({
        content: '鉴权失败，请重新登录',
        showCancel: false//不显示取消按钮
      })
      if (res) {
        clearStorage()
        wx.navigateTo({
          url: '/pages/login/login',
        })
      }
      return Promise.reject(response)
    default:
      toast({
        title: '程序出现异常,请联系客服或稍后重试'
      })
      return Promise.reject(response)

  }

}
// 将 WxRequest 的实例通过模块化的方式暴露出去
export default instance
